﻿using System;
using static System.Net.Mime.MediaTypeNames;
using System.IO;
using voidbox;
using System.Numerics;

namespace voidbox
{
    public interface ISystem
    {
        string VersionString
        {
            get;
        }
        //尝试加载另一个App
        void RunApp(string path);

        //尝试加载另一个App中的文件
        byte[] LoadBinaryInApp(string path, string file);
        string LoadTextInApp(string path, string file);
    }
    public interface IDebug
    {
        void Log(string type, string text);

        void Assert(bool condition, string message);
        //显示控制条
        bool ShowDebugTool
        {
            get;
            set;
        }
    }
    public interface IGraphics
    {
        void Clear(Color color);
        void EndDraw();
        SpriteInfo GetLogoSprite();

        void DrawSprite(PackedTextureElement sprite, Color32 color, Vector3 pos, Vector2 scale, float rotate);
    }
    public interface IApp
    {
        void Exit();
        string GetRootPath();
        byte[] LoadBinary(string file);
        string LoadText(string file);

        //得到像素尺寸
        ushort PixelWidth
        { get; }
        ushort PixelHeight
        { get; }

    }
    public interface IVoidBox
    {
        ////////////////////////////////////////////////////////////
        //sys_接口, 系统级别
        //得到系统信息
        ISystem System { get; }



        /////////////////////////////////////////////
        //调试接口
        IDebug Debug { get; }

        IApp App { get; }

        IGraphics Graphics { get; }


    }
    //在实现库中需要定义一个public类，继承IUserApp
    //要有public无参构造函数
    public interface IUserApp
    {
        void OnStart(IVoidBox voidBox);
        void OnUpdate(float delta);
        void OnRender();
    }


}
